﻿using System.Collections.Generic;
using CTS.Com.Domain.Model;
using CTS.Data.Domain.Dao;

namespace CTS.W._150101.Models.Domain.Common.Dao
{
    public class MasterDataComDao : GenericDao<EntitiesDataContext>
    {
        // Định nghĩa hằng file sql
        public const string MASTERDATACOMDAO_GETLISTCBOITEMTYPE_SQL = "MasterDataComDao_GetListCboItemType.sql";
        public const string MASTERDATACOMDAO_GETLISTCBOCATEGORY_SQL = "MasterDataComDao_GetListCboCategory.sql";
        public const string MASTERDATACOMDAO_GETLISTCBOEXEMPLAR_SQL = "MasterDataComDao_GetListCboExemplar.sql";
        public const string MASTERDATACOMDAO_GETLISTEXEMPLARCD_SQL = "MasterDataComDao_GetListExemplarCd.sql";

        /// <summary>
        /// Kiểm tra tồn tại loại sản phẩm
        /// </summary>
        public bool IsExistItemType(string localeCd, string typeCd, bool ignoreDeleteFlag)
        {
            // Tạo đối tượng key
            var key = new string[] { localeCd, typeCd };
            // Kết quả trả về
            return IsExist<MAItemType>(key, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin loại sản phẩm
        /// </summary>
        public MAItemType GetItemTypeInfo(string localeCd, string typeCd, bool ignoreDeleteFlag)
        {
            // Tạo đối tượng key
            var key = new string[] { localeCd, typeCd };
            // Kết quả trả về
            return GetSingle<MAItemType>(key, ignoreDeleteFlag);
        }

        /// <summary>
        /// Kiểm tra tồn tại chủng loại
        /// </summary>
        public bool IsExistCategory(string localeCd, string categoryCd, bool ignoreDeleteFlag)
        {
            // Tạo đối tượng key
            var key = new string[] { localeCd, categoryCd };
            // Kết quả trả về
            return IsExist<MACategory>(key, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin chủng loại
        /// </summary>
        public MACategory GetCategoryInfo(string localeCd, string categoryCd, bool ignoreDeleteFlag)
        {
            // Tạo đối tượng key
            var key = new string[] { localeCd, categoryCd };
            // Kết quả trả về
            return GetSingle<MACategory>(key, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách loại sản phẩm
        /// </summary>
        public IList<KeyValueObject> GetListCboItemType(string localeCd, string[] skipCodes, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                LocaleCd = localeCd,
                SkipCodes = skipCodes,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetListByFile<KeyValueObject>(MASTERDATACOMDAO_GETLISTCBOITEMTYPE_SQL, param);
        }

        /// <summary>
        /// Lấy danh sách chủng loại
        /// </summary>
        public IList<KeyValueObject> GetListCboCategory(string localeCd, string[] skipCodes, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                LocaleCd = localeCd,
                SkipCodes = skipCodes,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetListByFile<KeyValueObject>(MASTERDATACOMDAO_GETLISTCBOCATEGORY_SQL, param);
        }

        /// <summary>
        /// Lấy danh sách mẫu sản phẩm
        /// </summary>
        public IList<KeyValueObject> GetListCboExemplar()
        {
            // Tạo tham số
            var param = new { };
            // Kết quả trả về
            return GetListByFile<KeyValueObject>(MASTERDATACOMDAO_GETLISTCBOEXEMPLAR_SQL, param);
        }

        /// <summary>
        /// Lấy danh sách mẫu sản phẩm
        /// </summary>
        public IList<string> GetListExemplarCd()
        {
            // Tạo tham số
            var param = new { };
            // Kết quả trả về
            return GetListByFile<string>(MASTERDATACOMDAO_GETLISTEXEMPLARCD_SQL, param);
        }
    }
}
